#!/bin/bash

# Frontend Toolkit Git Hooks 安装脚本

set -e

echo "🔧 安装 Frontend Toolkit Git Hooks..."

# 检查是否在 git 仓库中
if [ ! -d ".git" ]; then
    echo "❌ 错误: 当前目录不是 git 仓库"
    exit 1
fi

# 确保 hooks 目录存在
mkdir -p .git/hooks

# 创建 pre-commit hook
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
# Frontend Toolkit Pre-commit Hook

echo "🔍 运行代码检查..."

# 检查是否有 staged 的 Rust 文件
if git diff --cached --name-only | grep -q '\.rs$'; then
    echo "📏 检查代码格式..."
    if ! cargo fmt -- --check; then
        echo "❌ 代码格式不符合标准，请运行 'cargo fmt' 格式化代码"
        exit 1
    fi

    echo "🔍 运行 Clippy 检查..."
    if ! cargo clippy -- -D warnings; then
        echo "❌ Clippy 检查失败，请修复警告后再提交"
        exit 1
    fi
    
    echo "✅ 代码检查通过"
else
    echo "ℹ️  没有 Rust 文件变更，跳过代码检查"
fi
EOF

# 创建 commit-msg hook
cat > .git/hooks/commit-msg << 'EOF'
#!/bin/sh
# Frontend Toolkit Commit Message Hook

echo "📝 检查提交信息格式..."

# 调用我们的提交信息检查工具
if command -v cargo > /dev/null 2>&1; then
    if ! cargo run --bin check-commit-msg -- "$1"; then
        exit 1
    fi
else
    echo "⚠️  警告: 未找到 cargo，跳过提交信息检查"
fi
EOF

# 设置执行权限
chmod +x .git/hooks/pre-commit
chmod +x .git/hooks/commit-msg

echo "✅ Git Hooks 安装完成！"
echo ""
echo "📋 已安装的 hooks:"
echo "  • pre-commit: 代码格式和 Clippy 检查"
echo "  • commit-msg: Conventional Commits 格式检查"
echo ""
echo "💡 提示:"
echo "  • 运行 'cargo fmt' 格式化代码"
echo "  • 运行 'cargo clippy' 检查代码质量"
echo "  • 使用 Conventional Commits 格式编写提交信息"
echo "    例如: feat: 添加新功能 | fix: 修复问题 | docs: 更新文档"